package cn.iocoder.yudao.module.locale.convert.tabledata;

import cn.iocoder.yudao.module.locale.controller.app.tabledata.vo.AppTableDataConditionRespVO;
import cn.iocoder.yudao.module.locale.dal.dataobject.tabledata.TableDataDO;
import cn.iocoder.yudao.module.locale.controller.app.tabledata.vo.AppTableDataConditionRespVO.*;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TableDataConverter {

    public static AppTableDataConditionRespVO convertToRespVO(List<TableDataDO> tableDataDOList) {
        AppTableDataConditionRespVO respVO = new AppTableDataConditionRespVO();
        List<Table> tableList = new ArrayList<>();
        Map<String, Table> tableMap = new HashMap<>(); // 用于存储表名对应的 Table 对象，便于快速查找和更新

        Map<String, Row> tableRowMap = new HashMap<>();

        for (TableDataDO tableDataDO : tableDataDOList) {
            String tableName = tableDataDO.getTableName();
            Table table = tableMap.get(tableName);
            if (table == null) {
                table = new Table();
                table.setTableName(tableName);
                table.setRowList(new ArrayList<>());
                tableList.add(table);
                tableMap.put(tableName, table);
            }

            final String rowKey = tableName + "_" + tableDataDO.getRowId();
            Row row = tableRowMap.get(rowKey);
            if (row == null){
                row = new Row();
                row.setRowId(tableDataDO.getRowId());
                row.setColumnList(new ArrayList<>());
                table.getRowList().add(row);
                tableRowMap.put(rowKey, row);
            }

            final Column column = new Column();
            column.setName(tableDataDO.getColumnName());
            column.setRawValue(tableDataDO.getColumnRawValue());
            column.setTranslatedValue(tableDataDO.getColumnTranslatedValue());

            row.getColumnList().add(column);
        }

        respVO.setTableList(tableList);
        return respVO;
    }
}
